﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DSVISUAL.LocalDNS
{
    public class DomainUtil
    {
        public static string GetDomain(string url)
        {
            string host;
            Uri uri;
            try
            {
                uri = new Uri(url);
                host = uri.Host + "";
            }
            catch
            {
                return "";
            }

            string[] BeReplacedStrs = new string[] { ".com", ".org", ".net", ".int", ".edu", ".gov", ".mil", ".academy", ".accountant", ".accountants", ".active", ".actor", ".ads", ".adult", ".aero", ".agency", ".airforce", ".apartments", ".app", ".archi", ".army", ".associates", ".attorney", ".auction", ".audible", ".audio", ".author", ".auto", ".autos", ".aws", ".baby", ".band", ".bar", ".barefoot", ".bargains", ".baseball", ".beauty", ".beer", ".best", ".bestbuy", ".bet", ".bid", ".bike", ".bingo", ".bio", ".biz", ".black", ".blackfriday", ".blockbuster", ".blog", ".blue", ".boo", ".book", ".bot", ".boutique", ".box", ".broker", ".build", ".builders", ".business", ".buy", ".buzz", ".cab", ".cafe", ".call", ".cam", ".camera", ".camp", ".cancerresearch", ".capital", ".cards", ".care", ".career", ".careers", ".cars", ".case", ".cash", ".casino", ".catering", ".catholic", ".center", ".ceo", ".cfd", ".channel", ".chat", ".cheap", ".christmas", ".church", ".circle", ".city", ".claims", ".cleaning", ".click", ".clinic", ".clothing", ".club", ".coach", ".codes", ".coffee", ".college", ".community", ".company", ".computer", ".condos", ".construction", ".consulting", ".contact", ".contractors", ".cooking", ".cool", ".coop", ".country", ".coupon", ".coupons", ".courses", ".credit", ".creditcard", ".cricket", ".cruises", ".dad", ".dance", ".date", ".dating", ".day", ".deal", ".deals", ".degree", ".delivery", ".democrat", ".dental", ".dentist", ".design", ".dev", ".diamonds", ".diet", ".digital", ".direct", ".directory", ".discount", ".diy", ".doctor", ".dog", ".domains", ".download", ".duck", ".earth", ".eat", ".eco", ".education", ".email", ".energy", ".engineer", ".engineering", ".equipment", ".esq", ".estate", ".events", ".exchange", ".expert", ".exposed", ".express", ".fail", ".faith", ".family", ".fan", ".fans", ".farm", ".fashion", ".fast", ".feedback", ".film", ".final", ".finance", ".financial", ".fire", ".fish", ".fishing", ".fit", ".fitness", ".flights", ".florist", ".flowers", ".fly", ".foo", ".food", ".foodnetwork", ".football", ".forsale", ".forum", ".foundation", ".free", ".frontdoor", ".fun", ".fund", ".furniture", ".fyi", ".gallery", ".game", ".games", ".garden", ".gift", ".gifts", ".gives", ".glass", ".global", ".gold", ".golf", ".gop", ".graphics", ".green", ".gripe", ".group", ".guide", ".guitars", ".guru", ".hair", ".hangout", ".health", ".healthcare", ".help", ".here", ".hiphop", ".hiv", ".hockey", ".holdings", ".holiday", ".homegoods", ".homes", ".homesense", ".horse", ".host", ".hosting", ".hot", ".house", ".how", ".ice", ".info", ".ing", ".ink", ".institute", ".insurance", ".insure", ".international", ".investments", ".jewelry", ".jobs", ".joy", ".kim", ".kitchen", ".land", ".latino", ".law", ".lawyer", ".lease", ".legal", ".lgbt", ".life", ".lifeinsurance", ".lighting", ".like", ".limited", ".limo", ".link", ".live", ".living", ".loan", ".loans", ".locker", ".lol", ".lotto", ".love", ".luxe", ".luxury", ".makeup", ".management", ".market", ".marketing", ".markets", ".mba", ".media", ".meet", ".meme", ".memorial", ".men", ".menu", ".mint", ".mobi", ".mobily", ".moe", ".money", ".mortgage", ".motorcycles", ".mov", ".movie", ".museum", ".name", ".navy", ".network", ".new", ".news", ".ngo", ".ninja", ".now", ".off", ".one", ".ong", ".onl", ".online", ".ooo", ".open", ".organic", ".origins", ".page", ".partners", ".parts", ".party", ".pay", ".pet", ".pharmacy", ".photo", ".photography", ".photos", ".physio", ".pics", ".pictures", ".pid", ".pin", ".pink", ".pizza", ".place", ".plumbing", ".plus", ".poker", ".porn", ".post", ".press", ".prime", ".pro", ".productions", ".prof", ".promo", ".properties", ".property", ".protection", ".qpon", ".racing", ".radio", ".read", ".realestate", ".realty", ".recipes", ".red", ".rehab", ".ren", ".rent", ".rentals", ".repair", ".report", ".republican", ".rest", ".review", ".reviews", ".rich", ".rip", ".rocks", ".rodeo", ".room", ".rsvp", ".run", ".safe", ".sale", ".save", ".school", ".science", ".secure", ".security", ".select", ".services", ".sex", ".sexy", ".shoes", ".shop", ".shopping", ".show", ".showtime", ".silk", ".singles", ".site", ".ski", ".skin", ".sky", ".smile", ".soccer", ".social", ".software", ".solar", ".solutions", ".song", ".space", ".spot", ".spreadbetting", ".store", ".stream", ".studio", ".study", ".style", ".sucks", ".supplies", ".supply", ".support", ".surf", ".surgery", ".systems", ".talk", ".tattoo", ".tax", ".taxi", ".team", ".tech", ".technology", ".tel", ".tennis", ".theater", ".theatre", ".tickets", ".tips", ".tires", ".today", ".tools", ".top", ".tours", ".town", ".toys", ".trade", ".trading", ".training", ".travel", ".travelersinsurance", ".trust", ".tube", ".tunes", ".university", ".vacations", ".vet", ".video", ".villas", ".vip", ".vision", ".vodka", ".vote", ".voting", ".voyage", ".wang", ".watch", ".watches", ".weather", ".webcam", ".website", ".wed", ".wedding", ".whoswho", ".wiki", ".win", ".wine", ".winners", ".work", ".works", ".world", ".wow", ".wtf", ".xxx", ".xyz", ".yoga", ".you", ".zero", ".zone", ".shouji", ".tushu", ".wanggou", ".weibo", ".xihuan", ".maison", ".sarl", ".epost", ".gmbh", ".haus", ".immobilien", ".jetzt", ".kaufen", ".kinder", ".reise", ".reisen", ".schule", ".versicherung", ".desi", ".shiksha", ".casa", ".immo", ".moda", ".voto", ".bom", ".passagens", ".abogado", ".gratis", ".futbol", ".hoteles", ".juegos", ".ltda", ".soy", ".tienda", ".uno", ".viajes", ".vuelos", ".bar", ".bank", ".coop", ".enterprises", ".industries", ".institute", ".pharmacy", ".pub", ".realtor", ".reit", ".rest", ".restaurant", ".ventures", ".capetown", ".durban", ".joburg", ".abudhabi", ".asia", ".doha", ".dubai", ".krd", ".kyoto", ".nagoya", ".okinawa", ".osaka", ".ryukyu", ".taipei", ".tatar", ".tokyo", ".yokohama", ".alsace", ".amsterdam", ".bcn", ".barcelona", ".bayern", ".berlin", ".brussels", ".budapest", ".bzh", ".cat", ".cologne", ".corsica", ".cymru", ".eus", ".frl", ".gal", ".gent", ".hamburg", ".helsinki", ".irish", ".ist", ".istanbul", ".koeln", ".london", ".madrid", ".moscow", ".nrw", ".paris", ".ruhr", ".saarland", ".scot", ".stockholm", ".swiss", ".tirol", ".vlaanderen", ".wales", ".wien", ".zuerich", ".boston", ".miami", ".nyc", ".quebec", ".vegas", ".kiwi", ".melbourne", ".sydney", ".lat", ".rio", ".abudhabi", ".aaa", ".abarth", ".abb", ".aeg", ".afl", ".aig", ".airbus", ".airtel", ".akdn", ".alfaromeo", ".allfinanz", ".alstom", ".americanexpress", ".amex", ".amica", ".android", ".anz", ".aol", ".apple", ".aquarelle", ".audi", ".auspost", ".axa", ".azure", ".barclaycard", ".barclays", ".bauhaus", ".bbc", ".bbt", ".bbva", ".bcg", ".bentley", ".bing", ".bloomberg", ".bms", ".bmw", ".bnl", ".bnpparibas", ".bosch", ".bostik", ".bradesco", ".bridgestone", ".brother", ".bugatti", ".cal", ".calvinklein", ".canon", ".capitalone", ".caravan", ".cartier", ".cba", ".cbn", ".cbs", ".cern", ".chanel", ".chrome", ".chrysler", ".cisco", ".citi", ".citic", ".clubmed", ".commbank", ".creditunion", ".crs", ".cuisinella", ".datsun", ".dell", ".deloitte", ".delta", ".dhl", ".dnp", ".dodge", ".dunlop", ".dupont", ".dvag", ".edeka", ".emerck", ".epson", ".ericsson", ".esurance", ".eurovision", ".everbank", ".extraspace", ".fedex", ".ferrari", ".fiat", ".firestone", ".firmdale", ".flickr", ".flsmidth", ".ford", ".forex", ".frogans", ".fujitsu", ".fujixerox", ".gallup", ".gbiz", ".genting", ".gle", ".globo", ".gmail", ".gmo", ".gmx", ".godaddy", ".goldpoint", ".goodyear", ".google", ".guardian", ".hdfc", ".hdfcbank", ".hisamitsu", ".hitachi", ".hkt", ".honda", ".honeywell", ".hotmail", ".hsbc", ".htc", ".hughes", ".hyatt", ".hyundai", ".ibm", ".ieee", ".ikano", ".imdb", ".infiniti", ".intel", ".itv", ".iveco", ".jaguar", ".java", ".jeep", ".jpmorgan", ".kerryhotels", ".kerrylogistics", ".kerryproperties", ".kfh", ".kia", ".kindle", ".komatsu", ".kpmg", ".kred", ".kuokgroup", ".lacaixa", ".ladbrokes", ".lamborghini", ".lancia", ".lancome", ".landrover", ".latrobe", ".lds", ".lego", ".lexus", ".lidl", ".lincoln", ".linde", ".lplfinancial", ".lundbeck", ".macys", ".mango", ".marriott", ".maserati", ".mcdonalds", ".mckinsey", ".metlife", ".microsoft", ".mini", ".mit", ".mitsubishi", ".monash", ".mormon", ".movistar", ".mtpc", ".mutuelle", ".nationwide", ".neustar", ".newholland", ".nexus", ".nhk", ".nico", ".nike", ".nikon", ".nissan", ".nissay", ".nokia", ".norton", ".nra", ".ntt", ".office", ".omega", ".oracle", ".orange", ".orientexpress", ".otsuka", ".ovh", ".pamperedchef", ".panasonic", ".philips", ".piaget", ".pioneer", ".play", ".playstation", ".pohl", ".praxi", ".prod", ".pwc", ".rexroth", ".ricoh", ".rocher", ".sakura", ".samsung", ".sandvik", ".sandvikcoromant", ".saxo", ".sbi", ".sbs", ".sca", ".scb", ".schmidt", ".scjohnson", ".seek", ".shangrila", ".sharp", ".shell", ".skype", ".sncf", ".sohu", ".sony", ".spiegel", ".statebank", ".statefarm", ".statoil", ".stc", ".stcgroup", ".suzuki", ".swatch", ".symantec", ".taobao", ".tatamotors", ".telefonica", ".toshiba", ".toyota", ".travelchannel", ".tui", ".tvs", ".unicom", ".uol", ".ups", ".vanguard", ".verisign", ".vig", ".virgin", ".visa", ".vivo", ".volkswagen", ".volvo", ".walmart", ".walter", ".weatherchannel", ".williamhill", ".windows", ".wme", ".wtc", ".xbox", ".xerox", ".xfinity", ".xperia", ".yahoo", ".yamaxun", ".yandex", ".youtube", ".zappos", ".zara", ".zip", ".zippo", ".example", ".invalid", ".local", ".localhost", ".onion", ".test",".me",".tt",".io",".jp",".gl" };

            foreach (string oneBeReplacedStr in BeReplacedStrs)
            {
                string BeReplacedStr = oneBeReplacedStr + "";
                if (host.IndexOf(BeReplacedStr) != -1)
                {
                    host = host.Replace(BeReplacedStr, string.Empty);
                    break;
                }
            }

            int dotIndex = host.LastIndexOf(".");
            host = uri.Host.Substring(dotIndex + 1);
            return host;
        }
    }
}
